package com.fowo.api.model.transaction.receivable.report.management;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.fowo.api.common.excel.ImageConvert;
import com.fowo.api.common.validator.EnumsString;
import com.fowo.api.sys.entity.SysFile;
import java.util.List;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/** 应收交易报告管理 导入导出辅助模型 */
@Getter
@Setter
public class TransactionReceivableReportManagementExcelPo {

  @Size(max = 50, message = "国家长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "国家")
  private String stationName;

  @ExcelIgnore
  @ExcelProperty(value = "国家")
  private Long station;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "报告类型")
  private String accountType;

  @Size(max = 50, message = "账单时区长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "账单时区")
  private String billingTimeZone;

  @Size(max = 50, message = "账单金额长度不能超过20")
  @ExcelProperty(value = "账单金额")
  private java.math.BigDecimal amount;

  @Size(max = 50, message = "币种长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "币种")
  private String currency;

  @Size(max = 50, message = "上传时间长度不能超过20")
  @DateTimeFormat("yyyy年MM月dd日HH:mm:ss")
  @ExcelProperty(value = "上传时间")
  private java.util.Date uploadTime;

  @EnumsString(
    value = { "未导入", "已导入", "解析成功", "解析失败", "已对账" },
    message = "状态的可用值为 “未导入”, “已导入”, “解析成功”, “解析失败”, “已对账” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "状态")
  private String state;

  @ExcelProperty(value = "summary报告", converter = ImageConvert.class)
  private List<SysFile> summaryReport;

  @ExcelProperty(value = "transaction报告", converter = ImageConvert.class)
  private List<SysFile> transactionReport;

  @ExcelProperty(value = "收入")
  private java.math.BigDecimal summaryincome;

  @ExcelProperty(value = "支出")
  private java.math.BigDecimal summaryexpenses;

  @ExcelProperty(value = "转移")
  private java.math.BigDecimal summarytransfers;

  @ExcelProperty(value = "税费")
  private java.math.BigDecimal summarytax;

  @Size(max = 50, message = "账单日期文本长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "账单日期文本")
  private String billingTimestring;
}
